Modern distributed computer systems are frequently implemented with a plurality of guest virtual computing systems that operate on one or more host computer environments. Such computer systems often create, destroy, suspend and resume guest virtual systems on a regular basis and may need efficient algorithms to allocate the guest virtual machines to the host computer environments when placing and instantiating the guest virtual machines. Inefficient placement algorithms may consume significant time in placing the guest virtual machines as they are instantiated, particularly when there are a large number of host systems or when those host systems are overly crowded. Frequently such placement algorithms do not scale well, becoming increasingly slow when the numbers of guest virtual machines and host computer environments grow. As the size and complexity of distributed and/or virtualized computing systems increases, inefficient placement and instantiation of guest virtual computing systems on host computer environments may lead to system slowdowns and/or outages and may adversely affect system availability and performance.